package com.kk.xhr.model.service;

import com.kk.xhr.common.pojo.BinaryEnum;
import com.kk.xhr.model.dto.PageDto;
import com.kk.xhr.model.dto.SalaryDTO;

import java.util.List;
import java.util.Optional;

/**
 * 薪资服务接口
 *
 * @author kkmystery
 * @version 1.0 2021/3/6
 * @since 1.0.0
 */
public interface ISalaryService {

    /**
     * 根据id查询薪资dto
     *
     * @param id 主键id
     * @return SalaryDTO
     */
    Optional<SalaryDTO> queryById(Long id);

    /**
     * 分页查询
     *
     * @param userId 用户id
     * @return SalaryDTO
     */
    PageDto<SalaryDTO> queryPage(Long userId, Integer limit, Integer offset);

    /**
     * 根据userId查询最新薪资dto
     *
     * @param userId 主键id
     * @return SalaryDTO
     */
    Optional<SalaryDTO> queryByUserId(Long userId);

    /**
     * 查询我的历史记录
     *
     * @param userId 用户id
     * @return 列表
     */
    List<SalaryDTO> queryLog(Long userId);

    /**
     * 新增薪资
     *
     * @param dto 薪资dto
     * @return 是否成功
     */
    boolean add(SalaryDTO dto);

    /**
     * 更新薪资
     *
     * @param dto 薪资dto
     * @return 是否成功
     */
    boolean modify(SalaryDTO dto);

    /**
     * 更新薪资状态
     *
     * @param id     主键id
     * @param status 状态
     * @return 是否成功
     */
    boolean modifyStatus(Long id, BinaryEnum status);

}
